package com.ssyc.gsk_teacher.adapter;

import android.content.Context;
import android.media.MediaPlayer;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.ssyc.common.adapter.CommonAdapter;
import com.ssyc.common.adapter.ViewHolder;
import com.ssyc.gsk_teacher.R;
import com.ssyc.gsk_teacher.bean.MusicInfo;

import java.util.List;


/**
 * 创建日期：2017/11/12 9:17 描述:音乐播放列表的适配器 作者:张伟
 */

public class MusicAdapter extends CommonAdapter<MusicInfo> {

    //上下文对象
    private Context context;
    // 音乐播放器对象
    private MediaPlayer player;
    //数据源
    private List<MusicInfo> datas;

    public MusicAdapter(Context context, List<MusicInfo> datas, int layoutId) {
        super(context, datas, layoutId);
        this.context = context;
        this.datas = datas;
    }

    @Override
    public void convert(final ViewHolder holder, final MusicInfo musicInfo) {
        // 音乐名称
        TextView tvMusicName = holder.getView(R.id.tv_music_name);
        tvMusicName.setText(musicInfo.getName());
        // 播放状态
        ImageView lvState = holder.getView(R.id.lv_state);
        if (musicInfo.isPlaying()) {
            lvState.setImageResource(R.drawable.teacher_pause);
        } else {
            lvState.setImageResource(R.drawable.teacher_play);
        }
        RelativeLayout rlState = holder.getView(R.id.rl_state);
        // 播放按钮的点击事件
        rlState.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //点击条目的播放按钮需要进行的操作
                //将其他条目重置为非播放状态,当前条目的播放状态进行取反设置
                //首先改变当前条目的图标状态
                for (int i = 0; i < datas.size(); i++) {
                    if (datas.get(i) != musicInfo) {
                        //对非当前位置的条目
                        datas.get(i).setPlaying(false);
                    } else {
                        //对当前条目进行状态取反的操作
                        musicInfo.setPlaying(!musicInfo.isPlaying());
                    }
                }

                notifyDataSetChanged();

                //根据播放状态的进行播放
                if (null != player && player.isPlaying()) {
                    // 播放状态,分两种情况考虑,一种是同一条条目的点击,另一种是不同条目的点击
                    if (!musicInfo.isPlaying()) {
                        //点击的同一个条目
                        player.reset();
                    } else {
                        //点击的非同一个条目
                        player.stop();
                        player.release();
                        player = MediaPlayer.create(context,
                                musicInfo.getResId());
                        player.start();
                    }
                } else {
                    // 非播放状态
                    // 如果当前的状态是没有播放就进行下面的操作
                    if (null == player) {
                        // 如果播放器为null,就创建一个播放器
                        player = MediaPlayer.create(context,
                                musicInfo.getResId());
                    } else {
                        player.reset();
                        player = MediaPlayer.create(context,
                                musicInfo.getResId());
                    }
                    player.start();
                }

                player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mediaPlayer) {
                        musicInfo.setPlaying(false);
                        notifyDataSetChanged();
                    }
                });
            }
        });
    }

    /**
     * 对外提供的释放播放器对象的方法的方法
     */
    public void releaseMediaPlayer() {
        if (player != null) {
            player.stop();
            player.release();
        }
    }
}
